// 求 A^2 - B^2 ,A、B为超大数
#include <bits/stdc++.h>
using namespace std;
int const N = 205;
string stra, strb;
int a[N], b[N], c[N], d[N], e[N];

int main()
{
    cin >> stra >> strb;
    if (stra[0] == '-')
    { // 这是有参构造，通过迭代器的，c++的类写的真方便
        string temp(stra.begin() + 1, stra.end());
        stra = temp;
    }
    if (strb[0] == '-')
    {
        string temp(strb.begin() + 1, strb.end());
        strb = temp;
    }
    int flag = 0;
    if (stra.length() < strb.length() || stra < strb) // 这里很关键，不能直接stra<strb，因为有长度条件
    {
        flag = 1;
        string temp = stra;
        stra = strb;
        strb = temp;
    } // 确保了a串大于b串
    int lena = stra.length();
    int lenb = strb.length();
    for (int i = 0; i < lena; ++i)
    {
        a[lena - i - 1] = stra[i] - '0'; // 数组a和b都是从0到lena-1和lenb-1；
    }
    for (int i = 0; i < lenb; ++i)
    {
        b[lenb - i - 1] = strb[i] - '0';
    }
    int andlen = max(lena, lenb);
    for (int i = 0; i < andlen; ++i)
    {
        c[i] += a[i] + b[i];
        if (c[i] > 9)
        {
            c[i + 1] += c[i] / 10; // 进位1
            c[i] %= 10;
        }
    }
    if (c[andlen])
        ++andlen; // 和最大可能多一位
    int chalen = max(lena, lenb);
    for (int i = 0; i < chalen; ++i)
    {
        d[i] += a[i] - b[i];
        if (d[i] < 0)
        {
            --d[i + 1];
            d[i] += 10;
        }
    }
    while (chalen > 0 && d[chalen] == 0)
        --chalen; // 差最少得1位数，1位0
    ++chalen;
    for (int i = 0; i < andlen; ++i)
    {
        for (int j = 0; j < chalen; ++j)
        {
            e[i + j] += c[i] * d[j]; //累加结果
        }
    }
    int chenlen = lena + lenb + 1; // 乘积的长度多开一个，方便最后while去前导0
    for (int i = 0; i < chenlen; ++i)
    {
        if (e[i] > 9)
        {
            e[i + 1] += e[i] / 10;
            e[i] %= 10;
        }
    }
    while (e[chenlen] == 0)
        --chenlen;
    if (flag)
        cout << '-';
    for (int i = chenlen; i >= 0; --i)
        cout << e[i];
    return 0;
}